# FSP (v1.02a)

# HMCX = 0x0005
#GET_PLATFORM_SRC = 0,B,0,2,UINT16+OFFSET,UINT16+COUNT,STRUCT_OPTIONAL_DATA+COUNT+CEC_SRC_STRUCT+CEC_SRC_LIST
GET_PLATFORM_SRC = 0,B,0,2,UINT16+OFFSET,UINT16+COUNT,\
                    IF+COUNT+!0+CONTINUE_GETTING_SRC
CONTINUE_GETTING_SRC = STRUCT_OPTIONAL_DATA+COUNT+CEC_SRC_STRUCT+CEC_SRC_LIST
CEC_SRC_STRUCT = UINT32+LENGTH,UINT8+SRC_VER,UINT8+SRC_FLAG,PAD+1,UINT8+WORD_COUNT,PAD+2,UINT16+SRC_STRUCT_LEN,\
                   UINT32+WORD2,UINT32+WORD3,UINT32+WORD4,UINT32+WORD5,\
                    UINT32+WORD6,UINT32+WORD7,UINT32+WORD8,UINT32+WORD9,FIXED_STRING+20+DATA


INTERFACE_CAPABILITIES = 0,5,0,4,UINT32+LENGTH,VARBIN+LENGTH+CAPABILITIES
GET_COMMAND_FAILED_LOG = 0,5,0,6,UINT32+LENGTH,VARBIN+LENGTH+ERROR_DATA
GET_HMC_POLLING_FREQUENCY = 0,5,0,8,UINT16+FREQUENCY,UINT8+TIMEOUTS,UINT8+STATUS
SET_HMC_POLLING_FREQUENCY = 0,5,0,9
GET_INTERFACE_IMPLEMENTATION_LIMITS = 0,5,0,A,UINT32+MAX_COMMAND_SIZE,UINT16+BROADCAST_EVENT_SIZE,\
                                UINT16+MAX_FSP_COMMANDS,UINT8+SUP_HMC_NUM,PAD+3,UINT16+LOCK_NUM,\
								UINT16+PERSIS_LOCK_NUM
GET_MASTER_HMC = 0,5,0,C,UINT8+STATUS,UINT8+MASTER_STATUS,PAD+2,UINT16+LENGTH,VARBIN+LENGTH+NAME

# TODO: Remove parms, they are only returned on an error.  See MASTER_HMC_ALREADY_DEFINED below
SET_MASTER_HMC = 0,5,0,D,UINT16+LENGTH,VARBIN+LENGTH+NAME

GET_HMC_LOCK_STATUS_V3 = 0,5,0,13,UINT16+DATA_OFFSET,UINT16+LOCKS_REMAIN,UINT16+LOCK_NUM,UINT16+LOCK_REC_LEN,\
        STRUCT+LOCK_NUM+LOCK_REC+LOCK_REC_LIST
SET_HMC_LOCKS_V2 = 0,5,0,16,UINT16+HMC_ID_LEN,FIXED_STRING+HMC_ID_LEN+HMC_ID,PAD+2,UINT16+LOCD_REC_SIZE,UINT32+REQ_ID,UINT32+FLAG,FIXED_BIN+8+LOCK_RES
RESET_HMC_LOCKS_V2 = 0,5,0,18
RESET_HMC_LOCKS_V2_FAILED = 0,5,0,18,UINT16+HMC_ID_LEN,FIXED_STRING+HMC_ID_LEN+HMC_ID,PAD+2,UINT16+LOCD_REC_SIZE,UINT32+REQ_ID,UINT32+FLAG,FIXED_BIN+8+LOCK_RES
LOCK_REC = UINT32+REQ_ID,UINT32+FLAG,FIXED_BIN+8+LOCK_RES
LOCK_RET= FIXED_BIN+18+HEADER,UINT16+HMC_ID_LEN,FIXED_STRING+HMC_ID_LEN+HMC_ID,PAD+2,UINT16+LOCD_REC_SIZE,UINT32+REQ_ID,UINT32+FLAG,FIXED_BIN+8+LOCK_RES


GET_EVENT_NOTIFICATION_MASK = 0,5,1,2,PAD+2,UINT16+LENGTH,VARBIN+LENGTH+MASK
SET_EVENT_NOTIFICATION_MASK = 0,5,1,3
ACKNOWLEDGE_OUTSTANDING_EVENTS = 0,5,1,7
GET_PENDING_EVENTS = 0,5,1,8,PAD+2,UINT16+LENGTH,VARBIN+LENGTH+DATA
GET_OUTSTANDING_EVENTS = 0,5,1,8,PAD+2,UINT16+LENGTH,VARBIN+LENGTH+MASK
SET_NOTIFICATION_EVENT = 0,5,1,11
GET_HMC_BROADCAST_EVENT = 0,5,1,14,PAD+2,UINT16+LENGTH,VARBIN+LENGTH+EVENT
GET_CURRENT_HMC_BROADCAST_SEQUENCE_NUMBER = 0,5,1,16,UINT16+NUMBER

GET_CEC_TIME_OF_DAY = 0,11,4,2,UINT16+YEAR,UINT8+MONTH,UINT8+DAY,UINT8+HOUR,\
                                   UINT8+MINUTE,UINT8+SECOND,PAD+1,UINT32+MICRO_SECOND
SET_CEC_TIME_OF_DAY = 0,11,84,3

GET_CEC_NAME = 0,5,11,4,UINT16+LENGTH,VARBIN+LENGTH+CEC_NAME
SET_CEC_NAME = 0,5,11,5
GET_CEC_STATE = 0,5,11,6,UINT8+STATE,PAD+1,UINT16+MAX_HYP_COMMANDS
GET_CEC_STATE_V3 = 0,5,11,C,UINT16+CEC_STATE_SUMMARY,UINT8+CEC_POWER_STATE,UINT8+CEC_NEXT_POWER_STATE,UINT8+CEC_RUN_STATE,UINT8+CE_NEXT_RUN_STATE,UINT16+MAX_HYP_COMMANDS
SET_CEC_STATE = 0,5,11,7
GET_STORAGE_CLUSTER_VPD = 0,5,11,15,UINT16+TYPE_MODEL_LENGTH,VARBIN+TYPE_MODEL_LENGTH+TYPE_MODEL,\
                                    UINT16+SERIAL_LENGTH,VARBIN+SERIAL_LENGTH+SERIAL,\
                                    UINT16+WWNN_LENGTH,VARBIN+WWNN_LENGTH+WWNN,\
                                    UINT16+SYSTEM_ID_LENGTH,VARBIN+SYSTEM_ID_LENGTH+SYSTEM_ID,\
                                    UINT16+MFG_DATE_LENGTH,VARBIN+MFG_DATE_LENGTH+MFG_DATE
GET_PROCESSOR_FEATURE_CODE = 0,5,11,16,FIXED_STRING+4+FEATURE_CODE

GET_PLATFORM_IPL_PARAMETERS = 0,10,11,10,PAD+2,UINT8+CURR_KEYLOCK_POSITION,UINT8+NEXT_KEYLOCK_POSITION,\
                                            UINT8+CURR_IPL_SIDE,UINT8+NEXT_IPL_SIDE,\
                                            UINT8+CURR_FSPM_OS_IPL_MODE,UINT8+NEXT_FSPM_OS_IPL_MODE,\
                                            UINT8+CURR_IPL_SPEED,UINT8+CURR_IPL_SPEED_OVERRIDE,\
                                            UINT8+NEXT_IPL_SPEED,UINT8+NEXT_IPL_SPEED_OVERRIDE,\
                                            UINT16+CURR_CEC_IPL_ATTRIBUTES,UINT8+CURR_CEC_IPL_MAJOR_TYPE,\
                                            UINT8+CURR_CEC_IPL_MINOR_TYPE,UINT8+CURR_HYPERVISOR_IPL_STATE,\
                                            UINT8+NEXT_HYPERVISOR_IPL_STATE,UINT8+CURR_FSPM_LPAR_BOOT_MODE,\
                                            UINT8+NEXT_FSPM_LPAR_BOOT_MODE,UINT16+CURR_FSP_BOOT_ATTRIBUTES,\
                                            UINT8+CURR_FSP_BOOT_MAJOR_TYPE,UINT8+CURR_FSP_BOOT_MINOR_TYPE,\
                                            UINT8+CURR_CEC_LMB_SIZE,UINT8+NEXT_CEC_LMB_SIZE
SET_PLATFORM_IPL_PARAMETERS = 0,10,11,11
REBOOT_SERVICE_PROCESSOR = 0,D,12,1
BROADCAST_MESSAGE = 0,5,0,19
SET_HMC_LOCKS = 0,5,0,15
RESET_HMC_LOCKS = 0,5,0,17
GET_HMC_LOCK_STATUS = 0,5,0,1C,UINT16+NUM_FSP_SUPPORTED_LOCKSTAT_BYTES,UINT16+NUM_LOCKSTAT_BYTES,\
                               VARBIN+NUM_LOCKSTAT_BYTES+LOCKSTAT_BYTES
GET_HMC_INFORMATION = 0,5,0,1A,UINT32+RESPONSE_LENGTH,UINT16+HEADER_SIZE,UINT8+REPEATS,PAD+1,\
                               STRUCT+REPEATS+HMC_INFORMATION_STRUCT+HMC_INFO_LIST
HMC_INFORMATION_STRUCT = UINT16+STRUCT_LENGTH,UINT8+CONNECTION_STATUS,PAD+1,UINT32+TOOL_TYPE,\
                         UINT16+HMC_ID_LENGTH,VARBIN+HMC_ID_LENGTH+HMC_ID

ACKNOWLEDGE_PLATFORM_DUMP = 0,5,1D,5
GET_LOCATION_CODE_LIST = 0,5,80,6,8,UINT32+LIST_ID

TRANSITION_HYPERVISOR_STATE = 0,5,0,21
# FILE IO
OPEN_FILE = 0,5,2,4,UINT32+FILE_SIZE,UINT32+WRITE_SIZE_LIMIT
READ_FILE = 0,5,2,6,UINT32+LENGTH,VARBIN+LENGTH+DATA
WRITE_FILE = 0,5,2,7,UINT32+LENGTH_WRITTEN
CLOSE_FILE = 0,5,2,5
GET_FILE_INSTANCE_LIST_2 = 0,5,2,A,PAD+2,UINT16+REPEATS,PAD+4,STRUCT+REPEATS+FILE_TOKEN+FILE_LIST
GET_FILE_INSTANCE_LIST = 0,5,2,A,PAD+2,UINT16+REPEATS,STRUCT+REPEATS+FILE_TOKEN+FILE_INST_LIST
FILE_TOKEN = PAD+2,UINT16+FILE_ID,UINT32+SUB_FILE_ID,UINT32+FILE_SIZE

#POWR cmds
GET_CEC_CONFIG_ID = 0,5,80,4,UINT32+CONFIG_ID
SET_CEC_CONFIG_ID = 0,5,80,3
GET_IO_DRAWER_CONFIG_ID = 0,5,80,9,UINT16+OFFSET,UINT16+NUM_ENTRIES,UINT16+VERSION,\
                                STRUCT+NUM_ENTRIES+DRAWER_ENTRY_STRUCT+DRAWER_ENTRY_LIST
DRAWER_ENTRY_STRUCT = UINT16+LEN,UINT16+IO_CONFIG_ID,UINT16+RACK_ADD,UINT16+UNIT_ADD,FIXED_STRING+4+TYPE,\
                      FIXED_STRING+3+MODEL,UINT8+UNIT_STATUS,FIXED_STRING+2+PLANT_ID,PAD+2,FIXED_STRING+C+SERIAL_NUM,\
                      UINT8+RLEN,UINT8+ALEN,FIXED_STRING+ALEN+LOC_CODE
SET_IO_DRAWER_MTMS = 0,5,80,5
SET_IO_DRAWER_CONFIG_ID = 0,5,80,8


# HMC_VTERM (VSER) = 0x0004
GET_MAX_HMC_VIRTUAL_SERIAL_CONNECTIONS = 0,4,21,2,UINT16+MAX_VSERIAL_PER_CEC,\
                                                       UINT8+MAX_VSERIAL_PER_LPAR
OPEN_VIRTUAL_SERIAL_CONNECTION = 0,4,21,6,UINT16+LPAR_ID,UINT16+CONNECTION_NUMBER,\
                                               UINT8+STATUS
CLOSE_VIRTUAL_SERIAL_CONNECTION = 0,4,21,7
SEND_VIRTUAL_SERIAL_DATA = 0,4,21,9
RECEIVE_VIRTUAL_SERIAL_DATA = 0,4,21,A,UINT16+LPAR_ID,UINT16+CONNECTION_NUMBER,\
                                            UINT16+LENGTH,VARBIN+LENGTH+DATA
SET_FLOW_CONTROL_ON_OFF = 0,4,21,B
GET_VIRTUAL_SERIAL_BUFFER_STATUS = 0,4,21,C,PAD+2,UINT16+AVAILABLE

# NETS = 0x0007
#GET_ENCLOSURE_TYPE_AND_INTERFACE_VERSION_NUMBER = 0,7,0,1,UINT8+FAMILY,UINT8+TYPE,UINT16+MAJOR_VERSION,\
#                                                       UINT16+MINOR_VERSION,UINT16+MASTER_SLAVE,\
#                                                       UINT16+MTM_LENGTH,VARBIN+MTM_LENGTH+TYPE_MODEL,\
#                                                       UINT16+SERIAL_LENGTH,VARBIN+SERIAL_LENGTH+SERIAL_NUMBER
PLATFORM_PASSWORD = 0,7,74,12,UINT8+STATUS
SET_PASSWORDS = 0,7,7,41
DISCONNECT_HMC=0,7,0,5

ASYNC_EVENT_NOTIFICATION = 0,7,0,1,UINT16+RESERVED,UINT16+MASK_LENGTH,VARBIN+MASK_LENGTH+DATA
OUTBOUND_BROADCAST_MSG = 0,7,B0,BF,BYTE+OFFSET_TO_DATA,UINT16+MSG_LEN,UINT32+TOOL_TYPE,UINT16+HMC_ID_LEN,VARBIN+HMC_ID_LEN+HMC_ID,VARBIN+MSG_LEN+DATA



# CODE_UPDATE (cupd) = 0x000C
START_CODE_UPDATE = 0,C,0,7,UINT32+MAX_WRITE_BLOCK_SIZE
CODE_UPDATE_COMPLETE = 0,C,0,D
CODE_COMMIT = 0,C,80,F
DELETE_LID = 0,C,80,B
WRITE_LID = 0,C,80,9
WRITE_LID_PARTIAL = 0,C,80,15
SET_CODE_UPDATE_POLICY = 0,C,0,11
GET_CODE_UPDATE_STATUS = 0,C,0,12,UINT8+UPDATE_POLICY,UINT8+UPDATE_STATUS,UINT16+LENGTH,VARBIN+LENGTH+NAME
READ_LID = 0,C,0,8,UINT16+OFFSET_TO_DATA,UINT8+END_OF_FILE_FLAG,PAD+1,UINT32+LENGTH_READ,VARBIN+LENGTH_READ+DATA
READ_LID_PARTIAL = 0,C,0,14,UINT16+OFFSET_TO_DATA,UINT8+END_OF_FILE_FLAG,PAD+1,UINT32+LENGTH_READ,VARBIN+LENGTH_READ+DATA
READ_LID_SPECIAL = 0,C,0,16,UINT16+OFFSET_TO_DATA,UINT8+END_OF_FILE_FLAG,PAD+1,UINT32+LENGTH_READ,VARBIN+LENGTH_READ+DATA


# ERROR_LOG (errl) = 0x000E
GET_CURRENT_FSP_LOG_ENTRY_ID = 0,E,0,2,8,UINT32+LOG_ENTRY_ID,UINT32+PLID
GET_LIST_OFPLATFORM_EVENTS_LOG_EVENTS = 0,E,0,4,UINT32+START_OFFSET,UINT16+ENTRY_COUNT,UINT16+EVENT_SIZE,STRUCT+ENTRY_COUNT+EVT_LOG_ID_STRUCT+EVT_LOG_ID_LIST
EVT_LOG_ID_STRUCT = UINT32+LOG_ENTRY_ID,UINT32+PLID
ACKNOWLEDGE_PLATFORM_EVENT_LOG_ENTRY = 0,E,0,5,8

#Virtual Operator Panel ( vpnl ) = 0x000D
GET_SYSTEM_DUMP_PARAMETERS = 0,D,2A,6,UINT8+COLLECTION_POLICY,UINT8+HARDWARE_CONTENT_POLICY,UINT8+HYPERVISOR_CONTENT_POLICY
SET_SYSTEM_DUMP_PARAMETERS = 0,D,2A,7
INITIAL_SYSTEM_DUMP = 0,D,AA,9
LAMP_TEST = 0,D,4,1,8
DUMP_SERVICE_PROCESSOR = 0,D,12,3


#LED COMMANDS (iled) = 0x000F
GET_SYSATTN_LED = 0,F,0,2,8,UINT8+LED
SET_SYSATTN_LED = 0,F,0,3,8
GET_FRU_IDENTIFY_LED = 0,F,80,4,8,UINT16+STATUS_ORIGIN,UINT16+STATUS_CODE,UINT8+FRU_LED
SET_FRU_IDENTIFY_LED =  0,F,80,5,8,UINT16+STATUS_ORIGIN,UINT16+STATUS_CODE


# PHYP (v3.0M)
# Cmd Router
#ROUTER_OPEN_SESSION = 80,0,0,1,UINT16+UP_BUFFER,UINT16+DOWN_BUFFER,UINT16+LENGTH,VARBIN+LENGTH+CAPABILITIES
GET_NUMBER_OF_HMC_INFO_SLOTS = 80,0,1,1,UINT16+NUMBER,UINT16+SLOT
GET_HMC_INFO = 80,0,1,2,UINT16+SLOT,UINT16+LENGTH,VARBIN+LENGTH+INFO
SET_HMC_INFO = 80,0,81,2
ECHO = 80,0,1,3,DATA+ERROR_DATA


# LPAR Commands
# Synchronous
#LPAR_OPEN_SESSION = 80,1,0,1,UINT16+UP_BUFFER,UINT16+DOWN_BUFFER,UINT16+LENGTH,VARBIN+LENGTH+CAPABILITIES
GET_NUMBER_OF_LPAR_SLOTS = 80,1,1,1,UINT16+NUM_LPAR_SLOTS
GET_HYPERVISOR_CAPABILITIES = 80,1,1,2,FIXED_BIN+4+CAPABILITIES
GET_HYPERVISOR_CONFIG_STATE_AND_POWER_POLICY = 80,1,1,3,UINT8+STATE,UINT8+POWER_OFF_POLICY,UINT8+CONFIG_STATE
#SET_HYPERVISOR_CONFIG_STATE = 80,1,81,3
SET_HYPERVISOR_POWER_OFF_POLICY = 80,1,81,4
GET_HYPERVISOR_CAPABILITY_VALUES = 80,1,1,5,UINT16+REGION_SIZE,UINT16+HOST_IDS,\
                  UINT16+PROC_UNITS,UINT8+PROC_POOLS,PAD+1,UINT16+MAX_IO_POOL_NUM,UINT16+MAX_VIR_PROC_PER_LPAR,\
                                  UINT16+MAX_DEDI_PROC_PER_LPAR,UINT8+MIN_HPT_RATIO,UINT8+MAX_HPT_RATIO,\
                                        UINT8+RECOMMANDED_HPT_RATIO,UINT8+MAX_VIR_OPTI,UINT8+MAX_HSL_OPTI
GET_HYPERVISOR_CONFIGURABLE_PROCESSING_AND_MEMORY = 80,1,1,6,UINT32+MEMORY,UINT32+PROC_UNITS
GET_HYPERVISOR_AVAILABLE_PROCESSING_AND_MEMORY = 80,1,1,7,\
        UINT32+CURRENT_MEMORY,UINT32+PENDING_MEMORY,\
        UINT16+CURRENT_INTERACTIVE,UINT16+PENDING_INTERACTIVE
GET_HYPERVISOR_MEMORY_STATISTICS = 80,1,1,8,UINT64+BASE_HYP_MEM,UINT64+MEM_PER_LPAR,UINT64+MEM_PER_OS400_PART,UINT64+MEM_PER_RPA_PART,UINT64+MEM_PER_MM_PART,UINT64+MEM_PER_VSLOT,UINT64+MEM_PER_VETH,UINT64+MEM_PER_VSCSI,UINT64+MEM_PER_VSERIAL,UINT64+MEM_PER_VSMC,UINT64+MEM_PER_HMC
#GET_HYPERVISOR_GLOBAL_ATTRIBUTES = 80,1,1,8,UINT8+LID_UPDATE
#SET_HYPERVISOR_GLOBAL_ATTRIBUTES = 80,1,81,8

GET_ALL_LPAR_SLOT_DEFINITION_STATES = 80,1,2,1,UINT16+REPEATS,STRUCT+REPEATS+SLOT_DEF_STRUCT+SLOT_DEF_LIST
SLOT_DEF_STRUCT = UINT8+DEFINITION_STATE

GET_LPAR_SLOT_DEFINITION_STATE = 80,1,2,2,UINT8+DEFINITION_STATE
SET_LPAR_SLOT_DEFINITION_STATE = 80,1,82,2
GET_LPAR_NAME = 80,1,2,3,UINT16+LENGTH,FIXED_STRING+LENGTH+LPAR_NAME
SET_LPAR_NAME = 80,1,82,3
GET_SERVICE_LPAR_ID = 80,1,2,4,UINT16+LPAR_ID
SET_SERVICE_LPAR_ID = 80,1,82,4

GET_LPAR_ATTRIBUTES = 80,1,2,10,UINT16+CLUSTER_LPAR_ID,UINT8+SHARED_POOL_UTIL_AUTH,\
                           UINT8+REPEATS,STRUCT+REPEATS+HOST_ID_STRUCT+HOST_LP_LIST
HOST_ID_STRUCT = UINT16+HOST_ID

#SET_LPAR_POWER_ON_WITH_HYPERVISOR = 80,1,82,10
SET_LPAR_HOSTING_PARTITION_ID = 80,1,82,12
SET_LPAR_CLUSTER_GROUP_ID = 80,1,82,13
SET_LPAR_SHARED_POOL_UTIL_AUTH = 80,1,82,14

GET_LPAR_CONFIG_VPD = 80,1,2,15,FIXED_BIN+8+VERSION,PAD+2,UINT16+LEN,FIXED_STRING+LEN+SERIAL_NUMBER,
#GET_LPAR_TCPIP_INFO = 80,1,2,17,TODO


# Processing
# Apply the correct template according to IS_SHARED
GET_CURRENT_LPAR_PROCESSING = 80,1,3,1,UINT8+IS_SHARED,UINT8+IS_UNCAPPED,\
                                       IF+IS_SHARED+FF+LPAR_DEDICATED_PROC_FORMAT,\
                                       IF+IS_SHARED+!FF+LPAR_SHARED_PROC_FORMAT
GET_PENDING_LPAR_PROCESSING = 80,1,3,2,UINT8+IS_SHARED,UINT8+IS_UNCAPPED,\
                                       IF+IS_SHARED+FF+LPAR_DEDICATED_PROC_FORMAT,\
                                       IF+IS_SHARED+!FF+LPAR_SHARED_PROC_FORMAT
LPAR_DEDICATED_PROC_FORMAT = UINT16+MIN_DEDICATED_PROCS,UINT16+DEDICATED_PROCS,UINT16+MAX_DEDICATED_PROCS
LPAR_SHARED_PROC_FORMAT = UINT16+MIN_VIRTUAL_PROCS,UINT16+VIRTUAL_PROCS,UINT16+MAX_VIRTUAL_PROCS,\
                          UINT32+MIN_SHARED_PROCS,UINT32+SHARED_PROCS,UINT32+MAX_SHARED_PROCS,\
                          UINT8+UNCAPPED_WEIGHT

#80,1,83,2 has two formats. We need two command here
SET_PENDING_LPAR_SHARED_PROCESSING = 80,1,83,2
SET_PENDING_LPAR_DED_PROCESSING = 80,1,83,2
SET_PENDING_LPAR_PROCESSING_MODE = 80,1,83,3

GET_RUNTIME_LPAR_PROCESSING = 80,1,3,4,UINT8+IS_SHARED,UINT8+IS_UNCAPPED,\
                                       IF+IS_SHARED+FF+RUNTIME_LPAR_DEDICATED_PROCS_FORMAT,\
                                       IF+IS_SHARED+!FF+RUNTIME_LPAR_SHARED_PROCS_FORMAT
RUNTIME_LPAR_DEDICATED_PROCS_FORMAT = UINT16+DEDICATED_PROCS
RUNTIME_LPAR_SHARED_PROCS_FORMAT = UINT16+VIRTUAL_PROCS,UINT32+PROC_UNITS,UINT8+UNCAPPED_WEIGHT

GET_CURRENT_AND_PENDING_SHARED_PROCESSING_RESOURCES = 80,1,3,6,UINT16+CURRENT_PROCS,\
                                                               PAD+2,UINT32+CURRENT_PROC_UNITS,\
                                                               UINT16+PENDING_PROCS,\
                                                               PAD+2,UINT32+PENDING_PROC_UNITS
#SET_PENDING_SHARED_PROCESSING_RESOURCES = 80,1,83,6

GET_PROC_POOL_UTILIZATION = 80,1,0,7,UINT32+CYCLE_PER_SND,UINT32+TOT_SIZE_IN_PROC_UNIT,\
                        UINT32+CFG_SIZE_IN_PROC_UNIT,PAD+4,UINT64+TOT_CYCLES,UINT64+UTILIZED_CYCLES,\
                        UINT64+CUR_CYCLES

# Memory
GET_CURRENT_AND_PENDING_LPAR_MEMORY = 80,1,4,1,UINT32+CURRENT_MIN_MEMORY,UINT32+CURRENT_MEMORY,\
                                           UINT32+CURRENT_MAX_MEMORY,UINT32+PENDING_MIN_MEMORY,\
                                           UINT32+PENDING_MEMORY,UINT32+PENDING_MAX_MEMORY, \
                                                                                        UINT8+CUR_HPT_RATIO,UINT8+PENDING_HPT_RATIO
SET_PENDING_LPAR_MEMORY = 80,1,84,1
GET_RUNTIME_LPAR_MEMORY = 80,1,4,3,UINT32+MEMORY,UINT32+RUNTIME_MIN_MEMORY
GET_REQUIRED_MINIMUM_MEMORY_FOR_MAXIMUM = 80,1,4,4,UINT32+MIN_MEMORY,UINT32+MEM_REG
MM_SET_PEND_LPAR_MEM = 80,1,84,2
MM_GET_CURR_PEND_LPAR_MEM = 80,1,4,2,UINT32+RESER1_CUR_MIN_MEM,UINT32+RESER1_CUR_MEM,UINT32+RESER1_CUR_MAX_MEM,\
                            UINT32+RESER1_PEND_MIN_MEM,UINT32+RESER1_PEND_MEM,UINT32+RESER1_PEND_MAX_MEM,\
                            UINT32+RESER2_CUR_MIN_MEM,UINT32+RESER2_CUR_MEM,UINT32+RESER2_CUR_MAX_MEM,\
                            UINT32+RESER2_PEND_MIN_MEM,UINT32+RESER2_PEND_MEM,UINT32+RESER2_PEND_MAX_MEM


# Physical I/O


GET_ALL_IO_UNIT_IDS_OLD = 80,1,5,1,UINT16+REPEATS,STRUCT+REPEATS+IO_UNIT_ID_STRUCT_OLD+IO_UNIT_ID_LIST
IO_UNIT_ID_STRUCT_OLD = UINT16+IO_UNIT_ID
GET_ALL_IO_UNIT_IDS = 80,1,5,1,UINT16+REPEATS,UINT16+REMAINING,UINT16+OFFSET_TOKEN,PAD+2,STRUCT+REPEATS+IO_UNIT_ID_STRUCT+IO_UNIT_ID_LIST
IO_UNIT_ID_STRUCT = UINT16+LENGTH,PAD+2,FIXED_STRING+LENGTH+IO_LOCATION_CODE

GET_IO_UNIT_INFO = 80,1,5,2,FIXED_STRING+4+TYPE,FIXED_STRING+4+MODEL,FIXED_STRING+8+SERIAL_NUMBER,\
                            UINT16+REPEATS,STRUCT+REPEATS+IO_BUS_ID_STRUCT+IO_BUS_ID_LIST
GET_IO_INFO = 80,1,5,2,UINT16+NUM_BRIDGETS,PAD+2,STRUCT+NUM_BRIDGETS+IO_BRIDGET_STRUCT+IO_BRIDGET_LIST
IO_BRIDGET_STRUCT = UINT32+DRC_INDEX,UINT8+SWITCHABLE,PAD+1,UINT16+NUM_BUSES,STRUCT+NUM_BUSES+IO_BUS_ID_STRUCT+IO_BUS_ID_LIST,BUS_PAD+NUM_BUSES

#GET_ALL_IO_UNIT_IDS = 80,1,5,1,UINT16+REPEATS,STRUCT+REPEATS+IO_UNIT_ID_STRUCT+IO_UNIT_MTMS_LIST
#IO_UNIT_ID_STRUCT = FIXED_STRING+4+TYPE,FIXED_STRING+4+MODEL,FIXED_STRING+8+SERIAL_NUMBER


IO_BUS_ID_STRUCT = UINT16+IO_BUS_ID

GET_ALL_IO_BUS_INFO = 80,1,5,9,UINT16+CUR_BUS_NUM,UINT16+REMAIN_BUS_NUM,STRUCT+CUR_BUS_NUM+IO_BUS_ID_STRUCT+BUS_ID_LIST
GET_COMMON_IO_SLOT_INFO = 80,1,5,A,UINT16+RTN_SLOT_NUM,UINT16+REMAIN_SLOT_NUM,STRUCT+RTN_SLOT_NUM+COMMON_SLOT_INFO_STRUCT+COMMON_SLOT_INFO_LIST
COMMON_SLOT_INFO_STRUCT = UINT32+DRC_NDX,UINT16+PAR_ID,UINT16+POOL_ID,UINT8+PRIORITY_FLAG,\
                                                UINT8+LOCK_OWNER_CLS,UINT16+LOCK_OWNER_ID,PAD+1,UINT8+PEND_LOCK_OWNER_CLS,\
                                                UINT16+PEND_LOCK_OWNER_ID

GET_IO_BUS_INFO = 80,1,5,3,PAD+2,UINT16+NUM_SLOTS,UINT16+LOC_CODE_LEN,FIXED_STRING+LOC_CODE_LEN+LOCATION_CODE,UINT32+DRC_NDX,\
                                        UINT16+DRC_NAME_LEN,FIXED_STRING+DRC_NAME_LEN+DRC_NAME
GET_IO_SLOT_INFO = 80,1,5,4,UINT16+REPEATS,UINT16+REMAIN_SLOT_NUM,STRUCT+REPEATS+IO_SLOT_STRUCT+IO_SLOT_LIST
#remove this after PHYP 360
GET_IO_SLOT_INFO_OLD = 80,1,5,4,UINT16+REPEATS,UINT16+REMAIN_SLOT_NUM,STRUCT+REPEATS+OLD_IO_SLOT_STRUCT+IO_SLOT_LIST
IO_SLOT_STRUCT = UINT32+DRC_INDEX,UINT8+FLD_FORMAT,PAD+3,UINT16+VENDOR_ID,UINT16+DEVICE_ID,UINT16+SUB_VENDOR_ID,UINT16+SUB_DEVICE_ID,\
                     UINT16+PCI_CLS_CODE,UINT8+PCI_REV_ID,UINT8+BUS_GROUPING,UINT16+IOP_INFO,UINT8+HAS_VPD,PAD+1,\
                                 UINT32+CAND_IOP_DRC_NDX,PAD+2,UINT16+LOC_CODE_LEN,FIXED_STRING+LOC_CODE_LEN+LOC_CODE,PAD+2,UINT16+DRC_NAME_LEN,\
                                 FIXED_STRING+DRC_NAME_LEN+DRC_NAME
#remove this after PHYP 360
OLD_IO_SLOT_STRUCT = UINT32+DRC_INDEX,UINT8+FLD_FORMAT,PAD+1,UINT16+VENDOR_ID,UINT16+DEVICE_ID,UINT16+SUB_VENDOR_ID,UINT16+SUB_DEVICE_ID,\
                     UINT16+PCI_CLS_CODE,UINT8+PCI_REV_ID,UINT8+BUS_GROUPING,UINT16+IOP_INFO,UINT8+HAS_VPD,PAD+3,\
                                 UINT32+CAND_IOP_DRC_NDX,PAD+2,UINT16+LOC_CODE_LEN,FIXED_STRING+LOC_CODE_LEN+LOC_CODE,PAD+2,UINT16+DRC_NAME_LEN,\
                                 FIXED_STRING+DRC_NAME_LEN+DRC_NAME
SET_IO_SLOT_OWNER_AND_POOL_ID = 80,1,85,4
GET_TAGGED_IO_FOR_OS400_LPAR = 80,1,5,5,UINT32+LS_INDEX,UINT32+ALT_LS_INDEX,UINT32+CONSOLE_INDEX,\
                                        UINT32+ALT_CONSOLE_INDEX,UINT32+ECS_INDEX,UINT32+OLD_ALT_LS_INDEX
SET_TAGGED_IO_FOR_OS400_LPAR = 80,1,85,5
GET_LPAR_IO_POOL_CONFIGURATION = 80,1,5,6,UINT16+REPEATS,STRUCT+REPEATS+IO_POOL_STRUCT+IO_POOL_LIST
IO_POOL_STRUCT = UINT16+IO_POOL_ID

SET_LPAR_IO_POOL_CONFIGURATION = 80,1,85,6
GET_IO_SLOT_VPD = 80,1,5,7,UINT16+REPEATS,UINT16+REMAIN_SLOT,\
                                        STRUCT+REPEATS+IO_SLOT_VPD_STRUCT+IO_SLOT_VPD_LIST
IO_SLOT_VPD_STRUCT = UINT32+DRC_INDEX,PAD+2,UINT16+TYPE_LEN,UINT16+MODEL_LEN,UINT16+SERIAL_LEN,\
                                        FIXED_STRING+TYPE_LEN+TYPE,FIXED_STRING+MODEL_LEN+MODEL,FIXED_STRING+SERIAL_LEN+SERIAL_NUMBER

CLEAR_NON_REPORTING_BUS = 80,1,85,8


# Interactive and Database capacity
GET_CURRENT_AND_PENDING_LPAR_INTERACTIVE_PERFORMANCE = 80,1,A,1,\
                UINT16+CURRENT_MIN_INTERACTIVE,UINT16+CURRENT_INTERACTIVE,UINT16+CURRENT_MAX_INTERACTIVE,\
                UINT16+PENDING_MIN_INTERACTIVE,UINT16+PENDING_INTERACTIVE,UINT16+PENDING_MAX_INTERACTIVE
SET_CURRENT_AND_PENDING_LPAR_INTERACTIVE_PERFORMANCE = 80,1,8A,2
GET_VALID_INTERACTIVE_RANGE = 80,1,A,3,UINT16+MIN_INTERACTIVE,UINT16+MAX_INTERACTIVE
GET_RUNTIME_INTERACTIVE_PERFORMANCE = 80,1,A,4,UINT16+INTERACTIVE


# Virtual I/O
GET_VIRTUAL_IO_CAPABILITIES = 80,1,B,1,UINT16+MAX_VETH_IDS
GET_VIRTUAL_IO_SLOT_STATE = 80,1,B,2,UINT16+CURRENT_MAX_SLOTS,UINT16+PENDING_MAX_SLOTS,UINT16+REMAIN_SLOT,\
                                     UINT16+REPEATS,STRUCT+REPEATS+VSLOT_STATE_STRUCT+VSLOT_LIST_ID
VSLOT_STATE_STRUCT = UINT16+SLOT_NUMBER,UINT8+CUR_OWNER_CLS,UINT16+CUR_LOCK_OWNER,UINT8+CONFIG_STATE,\
                                        UINT8+PEND_OWNER_CLS,UINT16+PEND_LOCK_OWNER,PAD+1

SET_LPAR_PENDING_MAXIMUM_NUMBER_OF_VIRTUAL_SLOTS = 80,1,8B,2
CLEAR_VIRTUAL_IO_SLOT_CONFIGURATION_STATE = 80,1,8B,3

GET_VIRTUAL_ETHERNET_SLOT_CONFIGURATION = 80,1,B,4,PAD+2,UINT8+IS_IEEE,UINT8+PRIORITY,UINT16+PVID,\
                                                   UINT8+IS_TRUNK,PAD+1,FIXED_BIN+6+MAC_ADDRESS,UINT16+REPEATS,\
                                                   STRUCT+REPEATS+VID_STRUCT+VID_LIST,UINT32+DRC_INDEX,PAD+2,\
                                                   UINT16+NAME_LENGTH,VARBIN+NAME_LENGTH+DRC_NAME
VID_STRUCT = UINT16+VID

SET_VIRTUAL_ETHERNET_SLOT_CONFIGURATION = 80,1,8B,4
GET_LPAR_VIRTUAL_OPTICONNECT_INFORMATION = 80,1,B,5,UINT8+USING_OPTICONNECT,UINT8+USING_HSL
SET_LPAR_VIRTUAL_OPTICONNECT_INFORMATION = 80,1,8B,5
GET_LPAR_VIRTUAL_SERIAL_SCSI_CONFIGURATION = 80,1,B,6,UINT8+CLASS,UINT8+ATTRIBUTES,UINT8+SUPPORTS_HMC,\
                                                                                        UINT8+PRIORITY_FLAG,UINT16+SERVER_LPAR_ID,UINT16+SLOT_NUMBER,\
                                                                                        UINT32+DRC_INDEX,PAD+2,UINT16+DRC_NAME_LEN,FIXED_STRING+DRC_NAME_LEN+DRC_NAME
SET_LPAR_VIRTUAL_SERIAL_SCSI_CONFIGURATION = 80,1,8B,6
GET_VIRTUAL_SERIAL_SERVER_CONNECTION_STATUS = 80,1,B,7,UINT16+REPEATS,UINT16+MATCH_NUMBER,\
                                                       STRUCT+REPEATS+VSERIAL_STRUCT+VSERIAL_ID_LIST
VSERIAL_STRUCT = UINT16+SERVER_LPAR_ID,UINT16+SERVER_VSLOT_NUMBER,UINT8+TYPE,PAD+1,UINT16+HMC_SLOT_ID

GET_SHARED_MEMORY_CLUSTER_IO     = 80,1,B,8,UINT32+HUB_DRC_INDEX,UINT16+RIO_BUS_NUM,UINT16+REMOTE_LPAR_ID,\
                                                        UINT16+REMOTE_VSLOT_NUM,UINT8+PRIORITY_FLAG,PAD+3,UINT16+DRC_NAME_LEN,\
                                                        FIXED_STRING+DRC_NAME_LEN+DRC_NAME
SET_SHARED_MEMORY_CLUSTER_IO = 80,1,8B,8
GET_VIRTUAL_IO_SLOT_DRC_INDEX_AND_NAME = 80,1,B,9,UINT32+DRC_INDEX,PAD+2,UINT16+NAME_LENGTH,VARBIN+NAME_LENGTH+DRC_NAME


# Shared I/O (SMA)
GET_CEC_SMA_INFO = 80,1,C,1,UINT16+REPEATS,STRUCT+REPEATS+SMA_ATTRIBUTES+SMA_LIST
SMA_ATTRIBUTES = UINT16+LPAR_ID,UINT16+MAX_PARTITIONS,UINT16+WINDOWS,\
                 UINT16+GRANULARITY,FIXED_STRING+24+LOCATION_CODE

GET_SMA_ASSIGNMENT_INFO = 80,1,C,2,UINT16+REPEATS,STRUCT+REPEATS+SMA_ASSIGNMENT+SMA_ASSIGNMENT_LIST
SMA_ASSIGNMENT = UINT16+LPAR_ID,UINT16+WINDOWS

SET_SMA_ASSIGNMENT_INFO = 80,1,8C,2


#LPAR Misc
LIST_PHYP_IP_CONFIG_INTF = 80,1,D,1,UINT32+REPEATS,STRUCT+REPEATS+PHYP_IP_CFG_STRUCT+PHYP_IP_CFG_LIST
PHYP_IP_CFG_STRUCT = UINT32+DRC_INDEX,FIXED_BIN+4+IP,FIXED_BIN+4+MASK,FIXED_BIN+4+GATEWAY1,FIXED_BIN+4+GATEWAY2,\
                                        UINT8+SPEED,UINT8+DUPLEX,UINT8+STATE,PAD+1
ADD_PHYP_IP_CONFIG_INTF = 80,1,8D,2
REMOVE_PHYP_IP_CONFIG_INTF = 80,1,8D,3
SET_PHYP_IP_INTF_ACT_STATE = 80,1,8D,4



# Backup/Recovery
GET_LPAR_CONFIGURATION_IMAGE_SIZE = 80,1,FE,1,UINT64+HANDLE,UINT16+BLOCK_SIZE,UINT16+NUM_BLOCKS
GET_LPAR_CONFIGURATION_IMAGE_BLOCK = 80,1,FE,2,DATA+BLOCK
SET_LPAR_CONFIGURATION_IMAGE_BLOCK = 80,1,FE,3
CLEAR_LPAR_CONFIGURATION = 80,1,FE,4


# Batch
START_LPAR_BATCH_MODE = 80,1,FF,1,UINT16+SIZE
COMMIT_LPAR_BATCH = 80,1,FF,2

# Asynchronous LPAR
LPAR_ASYNC_STATE_CHANGE = 80,1,0,3,UINT32+CHG_FLG_LEN,VARBIN+CHG_FLG_LEN+GBL_CHG_FLG,\
        UINT16+LPAR_NUM,STRUCT+LPAR_NUM+LPAR_CHANGE_STRUCT+LPAR_CHG_LIST,\
        UINT16+BUSSES,VARBIN+BUSSES+DATA
LPAR_CHANGE_STRUCT = UINT16+LPAR_ID,UINT16+LPAR_CHG_FLG

# iSeries DLPAR
#DLPAR_OPEN_SESSION = 80,2,0,1,UINT16+UP_BUFFER,UINT16+DOWN_BUFFER,PAD+2
#DLPAR_CLOSE_SESSION = 80,2,0,2
VARY_ON_OFF_PROCESSING = 80,2,80,4
VARY_ON_OFF_MEMORY = 80,2,80,2
VARY_ON_OFF_IO_SLOT = 80,2,80,3
QUERY_OUTSTANDING_DLPAR_COMMANDS = 80,2,3,5
SET_PEND_SLOT_LOCK_OWNER = 80,2,83,4

# VSP Commands
# Synchronous
#VSP_OPEN_SESSION = 80,3,0,1,UINT16+UP_BUFFER,UINT16+DOWN_BUFFER,UINT16+LENGTH,VARBIN+LENGTH+REGISTRATION
#VSP_CLOSE_SESSION = 80,3,0,2
POWER_ON = 80,3,81,1
POWER_OFF = 80,3,81,2
INIT_FIRE_HOSE_DUMP = 80,3,80,3
#new format
GET_PARTITION_VSP_ATTRIBUTES = 80,3,1,3,UINT8+KEYLOCK,UINT8+IPL_SOURCE,UINT8+AUTO_IPL,\
                                             UINT8+ATT_LED,UINT8+POWER_STATE,UINT8+BOOT_MODE
#old format: remove this after we stop support PHYP 360
GET_PARTITION_VSP_ATTRIBUTES_OLD = 80,3,1,3,UINT8+BOOT_MODE,UINT8+IPL_SOURCE,UINT8+AUTO_IPL,\
                                             UINT8+ATT_LED,UINT8+POWER_STATE
SET_PARTITION_VSP_ATTRIBUTES = 80,3,81,3
#remove this after we stop PHYP 360
SET_PARTITION_VSP_ATTRIBUTES_OLD = 80,3,81,3
GET_SUPPORTED_VIRTUAL_PANEL_FUNCTIONS = 80,3,1,5,FIXED_BIN+20+FUNCTIONS
PUSH_VIRTUAL_PANEL_FUNCTION = 80,3,81,5

GET_PARTITION_CURR_SRC_AND_SEQUENCE_NUMBER = 80,3,1,6,UINT32+SEQ_NUMBER,\
                        STRUCT_OPTIONAL_DATA+PARTITION_SRC_FORMAT+LPAR_SRC_LIST
GET_PARTITION_SRC_FROM_SEQUENCE_NUMBER = 80,3,1,7,UINT32+SEQ_NUMBER,STRUCT_OPTIONAL_DATA+PARTITION_SRC_FORMAT+LPAR_SRC_LIST
PARTITION_SRC_FORMAT = UINT16+YEAR,UINT8+MONTH,UINT8+DAY,UINT8+HOUR,UINT8+MINUTE,UINT8+SECOND,PAD+1,\
                        UINT8+SRC_VER,UINT8+SRC_FLAG,PAD+1,UINT8+WORD_COUNT,PAD+2,UINT16+SRC_STRUCT_LEN,\
                        UINT32+WORD2,UINT32+WORD3,UINT32+WORD4,UINT32+WORD5,\
                        UINT32+WORD6,UINT32+WORD7,UINT32+WORD8,UINT32+WORD9,FIXED_STRING+20+DATA

# VPNL = 0x000D
CEC_POWER_TRANSITION = 0,D,0,1,8
CEC_RE_IPL = 0,D,3,1,8

# Asynchronous
VSP_ASYNC_STATE_CHANGE = 80,3,0,3,UINT16+LENGTH,VARBIN+LENGTH+MASK


# CoD Commands
COD_AND_AP_OPEN_SESSION = 80,4,0,1,UINT16+UP_BUFFER,UINT16+DOWN_BUFFER,UINT16+LENGTH,\
                                   VARBIN+LENGTH+ASYNC_REG_PARMS
COD_AND_AP_CLOSE_SESSION = 80,4,0,2
GET_SYSTEM_CPW = 80,4,1,1,UINT32+TOTAL_CPW,UINT32+INTERACTIVE_CPW,UINT8+ALLOW_HMC_ASSIGN_INTERACTIVE
GET_COD_STATE = 80,4,1,2,UINT8+COD_STATE
GET_COD_CTA_VALUE = 80,4,1,3,UINT8+CTA_VALUE
SET_COD_CTA_VALUE = 80,4,81,3
SET_COD_RECOVERY_COMPLETE = 80,4,81,4
GET_COD_CAPABILITIES = 80,4,1,5,FIXED_BIN+4+COD_CAPABILITIES
SET_COD_KEY = 80,4,81,6,UINT32+NUM_PROCS,UINT32+AMT_MEM,UINT16+NUM_DAYS_ACTIVATED_ENABLED,\
                        UINT8+COD_TYPE,UINT8+COD_RESOURCE_TYPE,UINT8+ENABLED,\
                        UINT8+CONFIRMATION_REQ,UINT16+CONFIRMATION_ID
MANAGE_ONOFF_PROCESSORS = 80,4,81,9
MANAGE_ONOFF_MEMORY = 80,4,81,F
GET_ACTIVATION_INCREMENTS = 80,4,1,8,UINT16+ONOFF_PROC_INCREMENT,UINT16+METERED_PROC_INCREMENT,\
                                     UINT16+ONOFF_MEMORY_INCREMENT,UINT16+RESERVED_METERED_MEM_INCREMENT
MANAGE_METERED_PROCESSORS = 80,4,81,A
DISABLE_TRIAL_RESOURCES = 80,4,81,D

#CoD Async
COD_ASYNC_STATE_CHANGE = 80,4,0,3,FIXED_BIN+4+COD_EVT_MASK,UINT8+MSG_LIST_LENGTH,PAD+1,\
                              STRUCT+MSG_LIST_LENGTH+COD_MSG_STRUCT+COD_MSG_LIST
COD_MSG_STRUCT = UINT16+MSG_DESTINATION,UINT16+MSG_ID,UINT8+MSG_PARM_LIST_LENGTH,\
                 PAD+1,STRUCT+MSG_PARM_LIST_LENGTH+MSG_PARM_STRUCT+PARM_LIST
MSG_PARM_STRUCT = UINT16+MSG_PARM

#CoD Processor Info
GET_COD_PROCESSOR_INFO = 80,4,1,7,UINT32+TOT_INSTALLED_PROCS,UINT32+PERM_LICENSED_PROCS,\
                                  UINT32+DECONFIGURED_PROCS
GET_ONOFF_COD_PROCESSOR_INFO = 80,4,1,9,UINT32+CURR_ONOFF_PROCS_IN_USE,\
                                        UINT32+UNLICENSED_ONOFF_PROCS_CURR_AVAIL,\
                                        UINT32+NUM_UNRETURNED_ONOFF_PROCS_INUSE,\
                                        UINT16+ENABLED_ONOFF_PROCDAYS_LEFT,\
                                        UINT16+ACTIVATED_ONOFF_PROCDAYS_LEFT,\
                                        UINT8+ONOFF_PROCDAY_HOURS_LEFT,UINT8+ONOFF_PROC_STATE
GET_METERED_COD_PROCESSOR_INFO = 80,4,1,A,UINT32+CURR_METERED_PROCS_IN_USE,\
                                          UINT32+UNLICENSED_METERED_PROCS_AVAIL,\
                                          UINT16+ENABLED_METERED_PROCDAYS_LEFT,\
                                          UINT8+METERED_PROC_STATE,UINT8+RESERVED,\
                                          STRUCT_DIV+100+CURR_METERED_PROCS_IN_USE+PROCDAY_HOURS_LEFT_STRUCT+HOURS_LEFT_LIST
PROCDAY_HOURS_LEFT_STRUCT = UINT16+HOURS_LEFT
GET_SHARED_PROCESSOR_POOL_UTILIZATION = 80,4,1,B,UINT32+BASE_PROCS,UINT32+METERED_PROCS,\
                                                 UINT16+BASE_PROCS_UTILIZATION,UINT16+METERED_PROCS_UTILIZATION,\
                                                 UINT16+SAMPLE_RATE,UINT16+YEAR,UINT8+MONTH,UINT8+DAY,\
                                                 UINT8+HOUR,UINT8+MINUTE,UINT8+SECONDS
GET_TRIAL_COD_PROCESSOR_INFO = 80,4,1,C,UINT32+CURR_TRIAL_PROCS_IN_USE,UINT32+UNRETURNED_TRIAL_PROCS,\
                                        UINT16+TRIAL_HOURS_LEFT,UINT8+TRIAL_PROC_STATE
#CoD Memory Info
GET_COD_MEMORY_INFO = 80,4,1,E,UINT32+TOT_INSTALLED_MEM,UINT32+PERM_LICENSED_MEM,\
                               UINT32+DECONFIGURED_MEM
GET_ONOFF_COD_MEMORY_INFO = 80,4,1,F,UINT32+CURR_ONOFF_MEM_IN_USE,UINT32+UNLICENSED_ONOFF_MEM_CURR_AVAIL,\
                                     UINT32+AMT_UNRETURNED_ONOFF_MEM_INUSE,\
                                     UINT16+ENABLED_ONOFF_MEMUNITDAYS_LEFT,\
                                     UINT16+ACTIVATED_ONOFF_MEMUNITDAYS_LEFT,\
                                     UINT8+ONOFF_MEMUNITDAY_HOURS_LEFT,UINT8+ONOFF_MEM_STATE,\
                                     UINT16+ONOFF_MEMUNIT
GET_TRIAL_COD_MEMORY_INFO = 80,4,1,10,UINT32+CURR_TRIAL_MEM_IN_USE,UINT32+CURR_UNRETURNED_TRIAL_MEM,\
                                      UINT16+TRIAL_HOURS_LEFT,UINT8+TRIAL_MEM_STATE
#CoD Billing Info
GET_ONOFF_COD_PROC_BILLING_INFO = 80,4,1,12,UINT8+FORMAT,FIXED_STRING+4+SYS_TYPE,FIXED_STRING+A+SYS_SERIAL,\
                                            FIXED_STRING+4+CAP_CARD_CCIN,FIXED_STRING+A+CAP_CARD_SERIAL,\
                                            FIXED_STRING+10+CAP_CARD_ID,FIXED_STRING+1+ENABLED,FIXED_STRING+1+ACTIVE,\
                                            FIXED_STRING+4+FEATURE_CODE,FIXED_STRING+4+HIST_ENABLED_UNITS,\
                                            FIXED_STRING+4+SEQUENCE_NUM,FIXED_STRING+2+ENTRY_CHECKSUM,\
                                            FIXED_STRING+4+REQUESTED_UNITS,\
                                            FIXED_STRING+4+REQUESTED_DAYS,FIXED_STRING+4+UNIT_DAYS_EXPIRED,\
                                            FIXED_STRING+4+UNIT_DAYS_LEFT,FIXED_STRING+4+UNIT_DAYS_COUNTER,\
                                            FIXED_STRING+4+STANDBY_UNITS_AVAIL,FIXED_STRING+1+RESERVED1,\
                                            FIXED_STRING+4+HIST_REQUESTED_UNIT_DAYS,\
                                            FIXED_STRING+1+RESERVED2,FIXED_STRING+4+HIST_UNRETURNED_UNIT_DAYS,\
                                            FIXED_STRING+10+CURR_DATE_TIME,\
                                            FIXED_STRING+6+RUNTIME_COUNTER,FIXED_STRING+10+SIGNATURE,\
                                            FIXED_STRING+2+SIGNATURE_CHECKSUM,FIXED_STRING+2+STATUS,\
                                            FIXED_STRING+10+RESERVED3,FIXED_STRING+A+CURR_DATE,\
                                            FIXED_STRING+8+CURR_TIME
GET_ONOFF_COD_MEM_BILLING_INFO = 80,4,1,13,UINT8+FORMAT,FIXED_STRING+4+SYS_TYPE,FIXED_STRING+A+SYS_SERIAL,\
                                           FIXED_STRING+4+CAP_CARD_CCIN,\
                                           FIXED_STRING+A+CAP_CARD_SERIAL,FIXED_STRING+10+CAP_CARD_ID,\
                                           FIXED_STRING+1+ENABLED,FIXED_STRING+1+ACTIVE,FIXED_STRING+4+FEATURE_CODE,\
                                           FIXED_STRING+4+HIST_ENABLED_UNITS,FIXED_STRING+4+SEQUENCE_NUM,\
                                           FIXED_STRING+2+ENTRY_CHECKSUM,FIXED_STRING+4+REQUESTED_UNITS,\
                                           FIXED_STRING+4+REQUESTED_DAYS,FIXED_STRING+4+UNIT_DAYS_EXPIRED,\
                                           FIXED_STRING+4+UNIT_DAYS_LEFT,FIXED_STRING+4+UNIT_DAYS_COUNTER,\
                                           FIXED_STRING+4+STANDBY_UNITS_AVAIL,FIXED_STRING+1+RESERVED1,\
                                           FIXED_STRING+4+HIST_REQUESTED_UNIT_DAYS,\
                                           FIXED_STRING+1+RESERVED2,FIXED_STRING+4+HIST_UNRETURNED_UNIT_DAYS,\
                                           FIXED_STRING+10+CURR_DATE_TIME,\
                                           FIXED_STRING+6+RUNTIME_COUNTER,FIXED_STRING+10+SIGNATURE,\
                                           FIXED_STRING+2+SIGNATURE_CHECKSUM,FIXED_STRING+2+STATUS,\
                                           FIXED_STRING+10+RESERVED3,FIXED_STRING+1+GRANULARITY,\
                                           FIXED_STRING+A+CURR_DATE,FIXED_STRING+8+CURR_TIME
#CoD Order Info
GET_COD_ORDER_INFO = 80,4,1,11,UINT8+FORMAT,FIXED_STRING+4+SYS_TYPE,FIXED_STRING+A+SYS_SERIAL,\
                               FIXED_STRING+4+CAP_CARD_CCIN,FIXED_STRING+A+CAP_CARD_SERIAL,\
                               FIXED_STRING+10+CAP_CARD_ID,FIXED_STRING+4+RESOURCE_ID,\
                               FIXED_STRING+4+COD_RESOURCES_ACTIVATED,FIXED_STRING+4+COD_SEQUENCE_NUM,\
                               FIXED_STRING+2+COD_CHECKSUM
#CoD History Log
GET_COD_HISTORY_LOG = 80,4,1,14,UINT8+FORMAT,UINT8+LOG_WRAPPED,UINT16+NUM_ENTRIES_THIS_REQ,\
                                UINT16+NUM_ENTRIES_LEFT,UINT16+OFFSET_TOKEN,UINT64+HIST_LOG_ID,\
                                STRUCT+NUM_ENTRIES_THIS_REQ+LOG_ENTRY_STRUCT+LOG_ENTRY_LIST
LOG_ENTRY_STRUCT = UINT16+COD_MSG_ID,UINT8+COD_TYPE,UINT8+COD_RESOURCE_TYPE,UINT16+PARM1,\
                   UINT16+PARM2,UINT16+TIMESTAMP_YEAR,UINT8+TIMESTAMP_MONTH,\
                   UINT8+TIMESTAMP_DAY,UINT8+TIMESTAMP_HOUR,UINT8+TIMESTAMP_MINUTE,\
                   UINT8+TIMESTAMP_SECOND,PAD+1

# FoD Commands
#Set Fod Key
SET_FOD_KEY = 80,4,82,6,UINT32+FOD_TYPE,PAD+1,UINT8+CONFIRMATION_REQ,UINT16+CONFIRMATION_ID
#Get FoD Order Info
GET_FOD_ORDER_INFO = 80,4,2,11,UINT8+FORMAT,FIXED_STRING+4+SYS_TYPE,FIXED_STRING+A+SYS_SERIAL,\
                               FIXED_STRING+4+CAP_CARD_CCIN,FIXED_STRING+A+CAP_CARD_SERIAL,\
                               FIXED_STRING+10+CAP_CARD_ID,FIXED_STRING+4+RESOURCE_ID,\
                               FIXED_STRING+4+RESOURCES_ACTIVATED,FIXED_STRING+4+FOD_SEQUENCE_NUM,\
                               FIXED_STRING+2+FOD_CHECKSUM
# Get FoD Capabilities cmd
GET_FOD_CAPABILITIES = 80,4,2,5,FIXED_BIN+4+FOD_CAPABILITIES

FOD_EXT_ERR_DATA = UINT32+FOD_TYPE,PAD+1,UINT8+CONFIRMATION_REQ,UINT16+CONFIRMATION_ID 
# IO Concurrent
IO_MAINT_OPEN_SESSION = 80,5,0,1,UINT16+INBOUND_MSGS,UINT16+OUTBOUND_MSGS,UINT16+LENGTH,PAD+2,UINT64+CAPABILITIES

GET_POWER_DOMAIN = 80,5,1,1,UINT16+RETURN_CODE,PAD+6,UINT16+LENGHT,VARBIN+LENGHT+LOCATION_CODE,UINT16+LENGHT1,VARBIN+LENGHT1+RETURN_CODE_DATA

GET_POWER_DOMAIN_POWER_STATE = 80,5,1,9,UINT16+RETURN_CODE,UINT8+POWER_STATE,PAD+1,UINT16+LENGHT1,VARBIN+LENGHT1+RETURN_CODE_DATA

ACQUIRE_POWER_DOMAIN_SERVICE_LOCK = 80,5,1,5,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST

RELEASE_POWER_DOMAIN_SERVICE_LOCK = 80,5,1,6,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST

POWER_ON_POWER_DOMAIN = 80,5,1,8,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST
POWER_OFF_POWER_DOMAIN = 80,5,1,7,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST
CAN_VARY_OFF_POWER_DOMAIN = 80,5,1,2,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST
VARY_OFF_POWER_DOMAIN = 80,5,1,3,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST
VARY_ON_POWER_DOMAIN = 80,5,1,4,UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST
HYP_PIPE_REQUEST = 80,5,3,1,UINT16+RETURN_CODE,UINT16+LENGHT,VARBIN+LENGHT+RETURN_CODE_DATA
HYP_PIPE_REQ_EXCH_CAPS = 80,5,3,1,UINT16+RETURN_CODE,UINT16+LENGHT,VARBIN+LENGHT+RETURN_CODE_DATA

HYPER_PIPE_RESP_ASYNC = 80,5,3,2,UINT16+RETURN_CODE,PAD+6,UINT64+REQUEST_ID,UINT32+LENGTH1,UINT32+LENGTH2,UINT32+LENGTH3,UINT32+KEY_ID,VARBIN+LENGTH2+RESPONSE_DATA,UINT16+LENGTH4,VARBIN+LENGTH4+RET_CODE_DATA

HYPER_PIPE_RESP_ASYNC_EXCH_CAPS = 80,5,3,2,UINT16+RETURN_CODE,PAD+6,UINT64+REQUEST_ID,UINT32+LENGTH1,UINT32+LENGTH2,UINT32+LENGTH3,UINT32+KEY_ID,VARBIN+LENGTH2+RESPONSE_DATA,UINT16+LENGTH4,VARBIN+LENGTH4+RET_CODE_DATA

GET_REMAINING_RESP_DATA = 80,5,4,1,UINT16+RETURN_CODE,PAD+2,UINT32+LENGTH1,UINT32+LENGTH2,UINT32+LENGTH3,UINT32+KEY_ID,PAD+4,VARBIN+LENGTH2+RESPONSE_DATA,UINT16+LENGTH4,VARBIN+LENGTH4+RET_CODE_DATA

DISCARD_REMAINING_RESP_DATA = 80,5,4,2,UINT16+RETURN_CODE,UINT16+LENGTH,VARBIN+LENGTH+RETURN_CODE_DATA

HYP_PIPE_CANCEL_REQUEST = 80,5,3,3,UINT16+RETURN_CODE,UINT16+LENGHT,VARBIN+LENGHT+RETURN_CODE_DATA

RESP_DATA_STRUCT = UINT16+REPEATS,STRUCT+REPEATS+IO_CONC_RET_CODE_STRUCT+IO_CONC_RET_CODE_LIST

RESP_DATA_EXCH_CAPS_STRUCT = UINT16+RET_CODE,PAD+6,UINT64+PART_CAPABILITY

IO_CONC_RET_CODE_STRUCT = UINT16+LENGTH,UINT16+RETURN_CODE,UINT16+LENGHT1,VARBIN+LENGHT1+RETURN_CODE_DATA

OPEN_PHYP_FILE = 80,5,6,1,UINT16+RETURN_CODE,PAD+2,UINT32+TOTAL_FILE_SIZE,UINT32+WRITE_SIZE_LIMIT

WRITE_PHYP_FILE = 80,5,6,2,UINT16+RETURN_CODE,PAD+2,UINT32+LENGTH_WRITTEN
CLOSE_PHYP_FILE = 80,5,6,4,UINT16+RETURN_CODE,PAD+2
GET_FIRMWARE_UPDATE_STATUS = 80,5,6,5,UINT16+RETURN_CODE,UINT8+UPDATE_STATUS,UINT8+LAST_UPDATE_TYPE,FIXED_BIN+C+TIME_STAMP,FIXED_STRING+28+MI_KEYWORD,UINT64+VRM,UINT8+ERROR_CODE,UINT16+TIME_LIMIT
START_FIRMWARE_UPDATE = 80,5,6,6,UINT16+RETURN_CODE


#MegaMouth commands
MM_GET_IO_HUBS = 80,5,7,1,UINT16+RETURN_CODE,PAD+2,UINT32+REPEATS_LENGTH,\
                 STRUCT_DIV+5+REPEATS_LENGTH+MM_IO_HUB_STRUCT+MM_IO_HUB_LIST,\
                 UINT16+ADDT_RTN_CODE_LEN,VARBIN+ADDT_RTN_CODE_LEN+ADDT_RTN_CODE_DATA
MM_IO_HUB_STRUCT = UINT32+HUB_DRC_INDEX,UINT8+HUB_TYPE
MM_GET_RIO_BUSES = 80,5,7,2,UINT16+RETURN_CODE,PAD+2,UINT32+REPEATS_LENGTH,\
                   STRUCT_DIV+5+REPEATS_LENGTH+MM_RIO_BUS_STRUCT+MM_RIO_BUS_LIST,\
                   UINT16+ADDT_RTN_CODE_LEN,VARBIN+ADDT_RTN_CODE_LEN+ADDT_RTN_CODE_DATA
MM_RIO_BUS_STRUCT = UINT32+BUS_NUMBER,UINT8+BUS_TYPE
MM_GET_RIO_TOPOLOGY = 80,5,7,3,UINT16+RETURN_CODE,PAD+2,UINT32+TOTAL_LENGTH,UINT32+LENGTH,\
                      UINT32+REMAINING_LENGTH,UINT32+RESPONSE_DATA_KEY,UINT16+REPEATS,\
                      PAD+2,STRUCT_PADDING_HACK+REPEATS+MM_RIO_NODE_STRUCT+MM_RIO_NODE_LIST
MM_RIO_NODE_STRUCT = UINT16+NODE_LENGTH,UINT16+NODE_VERSION,UINT8+NODE_TYPE,UINT8+NODE_FLAG,\
                     PAD+2,UINT8+LEADING_PORT_TYPE,UINT8+LEADING_PORT_SPEED,UINT8+LEADING_PORT_CABLE_ID,\
                     UINT8+LEADING_PORT_FLAG,UINT32+DRC_INDEX,FIXED_STRING+4+POWER_CONTROL_SYSTEM_TYPE,\
                     FIXED_STRING+C+POWER_CONTROL_SYSTEM_SERIAL,FIXED_STRING+4+FUNCTION_CONTROL_SYSTEM_TYPE,\
                     FIXED_STRING+C+FUNCTION_CONTROL_SYSTEM_SERIAL,PAD+1,UINT8+ENCLOSURE_LOC_SIZE,\
                     UINT16+ENCLOSURE_LOC_OFFSET,UINT8+LEADING_PORT_STATUS,UINT8+LEADING_PORT_LOC_SIZE,\
                     UINT16+LEADING_PORT_LOC_OFFSET,UINT8+TRAILING_PORT_STATUS,UINT8+TRAILING_PORT_LOC_SIZE,\
                     UINT16+TRAILING_PORT_LOC_OFFSET,VARBIN+ENCLOSURE_LOC_SIZE+ENCLOSURE_LOC_CODE,\
                     VARBIN+LEADING_PORT_LOC_SIZE+LEADING_PORT_LOC_CODE,VARBIN+TRAILING_PORT_LOC_SIZE+TRAILING_LOC_CODE
MM_GET_REMAINING_DATA = 80,5,4,1,UINT16+RETURN_CODE,PAD+2,UINT32+TOTALL_ENGTH,UINT32+LENGTH,\
                        UINT32+REMAINING_LENGTH,UINT32+RESPONSE_DATA_KEY,PAD+4,UINT16+REPEATS,\
                        STRUCT+REPEATS+MM_RIO_NODE_STRUCT+MM_RIO_NODE_LIST
MM_SET_MULTI_HUB_MODE = 80,5,87,4,UINT16+RETURN_CODE,UINT16+LENGTH1,VARBIN+LENGTH1+ADD_RETURN_CODE_DATA
MM_GET_MULTI_HUB_MODE = 80,5,7,4,UINT16+RETURN_CODE,UINT8+HUB_MODE,PAD+1,UINT16+LENGTH1,VARBIN+LENGTH1+ADD_RETURN_CODE_DATA


# Status error codes
INVALID_DATA = DATA+ERROR_DATA
EXTENDED_ERROR = DATA+ERROR_DATA
MASTER_HMC_ALREADY_DEFINED = UINT16+LENGTH,VARBIN+LENGTH+NAME
SET_FRU_SECONDARY_STATUS = UINT16+STATUS_ORIGIN,UINT16+STATUS_CODE


#hardware server command
FSP_QUERY_DATA = UINT16+LEN_BEF_MTMS,LUINT16+INTF_VER_FAMILY,LUINT16+FSP_TYPE,LUINT16+MAJOR_VER,LUINT16+MINOR_VER,\
                                  LUINT16+CONN_STATE,LUINT32+SS_VPORT_NUM,LUINT16+SS_CONN_STATE,LUINT16+PEND_PW_CHG_BITFLD,\
                                  UINT16+BRAND,LUINT16+IP_LEN,STRING+IP_ADDR,LUINT16+MTMS_LEN,STRING+MTMS,\
                                  LUINT64+LST_FAIL_TIME,LUINT16+EXT_REASON,LUINT16+INT_REASON_CAT,LUINT32+INT_REASON_CODE,\
                                  LUINT64+SS_LST_FAIL_TIME,LUINT16+SS_EXT_REASON,LUINT16+SS_INT_REASON_CAT,\
                                  LUINT32+SS_INT_REASON_CODE

HARDWARE_SERVER_VERSION_MTMS_QUERY = UINT8+MAJOR_VER,UINT8+MINOR_VER,UINT8+BLD_YEAR,UINT8+BLD_WEEK,LUINT16+MTMS_LEN,\
								  STRING+MTMS
